# -*- coding: utf-8 -*-
"""
可以指定使用的数据库，也可以设置读写的数据库
每一个queryset中都有一个using方法来指定使用的库
文档参考请查看：Django官方文档即可
------------------------------------------
关于数据库读写分离的话，这里是要注意的，生产和测试环境都需要修改的，如果觉得麻烦的话
可以定义一个中间文件来做读取区分即可
"""

import random

class DatabaseReplicaRouter:
    """
    可以是多个db_router,文档可以参考：：官方文档
    DATABASE_ROUTERS = ['teat_demo.core.database_route.DatabaseReplicaRouter', '']
    """
    def db_for_read(self,model,**hints):
        """
        readonly
        # 随机选择不同的db
        """
        return random.choice(['db1','db2'])
    
    def db_for_write(self,model,**hints):
        """
        wirteonly
        """
        return ''
    
    def allow_relation(self,obj1,obj2,**hints)
        """
        relations betweent objects are allowed
        """
        db_list = ('db1','db2','db3')
        if obj1._state.db in db_list and obj2._state.db in db_list:
            return True
        else:
            return None
    
    def allow_migrate(self,db,app_label,model_name=None,**hints):
        """
        all non-auth models end up in this pool
        """
        return True